package utils

import (
	"fmt"
	"golang.org/x/net/html"
	"strconv"
	"strings"
)

// 获取学校id
func GetSchId(tagKey string) (int64, error) {
	parts := strings.Split(tagKey, "--")
	if len(parts) > 1 {
		schIdParts := strings.Split(parts[1], ".")
		if len(schIdParts) > 0 {
			if len(schIdParts[0]) > 0 {
				res := strings.Split(schIdParts[0], "-")
				val, err := strconv.ParseInt(res[1], 10, 64)
				return val, err
			} else {
				return 0, fmt.Errorf("未找到schId")
			}
		} else {
			return 0, fmt.Errorf("未找到schId")
		}
	} else {
		return 0, fmt.Errorf("未找到schId")
	}
}

// 获取院校专业目录id
func GetCategoryId(tagKey string) (int64, error) {
	parts := strings.Split(tagKey, ",")
	if len(parts) > 1 {
		schIdParts := strings.Split(parts[1], ".")
		if len(schIdParts) > 0 {
			if len(schIdParts[0]) > 0 {
				res := strings.Split(schIdParts[0], "-")
				val, err := strconv.ParseInt(res[1], 10, 64)
				return val, err
			} else {
				return 0, fmt.Errorf("未找到categoryId")
			}
		} else {
			return 0, fmt.Errorf("未找到categoryId")
		}
	} else {
		return 0, fmt.Errorf("未找到categoryId")
	}
}

// checkAttributes 检查节点是否同时包含特定的两个属性
func CheckAttributes(n *html.Node, attrKeys ...string) bool {
	attrMap := make(map[string]bool)

	// 遍历所有属性，存储在map中
	for _, a := range n.Attr {
		attrMap[a.Key] = true
	}

	// 检查所需的属性是否都在map中
	for _, key := range attrKeys {
		if !attrMap[key] {
			return false // 如果任一属性不存在，返回false
		}
	}
	return true // 所有属性都存在
}
